#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QUdpSocket>
#include<QDebug>
#include<QTcpSocket>
#include<QMetaEnum>
#include <QTimer>
#include "message.h"


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
/**
 * @brief 实现组播的发送方
 * @note UDP 组播使用单个发送者向一个预定义的组播地址发送数据报，
 * 而接收者需要加入到该组播地址才能接收到数据。
 * 组播地址是一个特殊的 IPv4 或 IPv6 地址范围，
 * 例如 IPv4 的组播地址范围是 224.0.0.0 到 239.255.255.255。
 * 在组播中，发送者和接收者通过共享相同的组播地址进行通信。
 *
 *  组播发送者不用绑定 Socket 到指定的端口 也不用加入到指定的组播组。
 *  发送数据报到指定的组播地址和端口。
 *
 */
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();


private slots:
    /**
     * @brief 显示消息
     * @param info
     */
    void showMessage(const QString &info);
    void on_btnSend_clicked();

private:
    Ui::Widget *ui;
    QUdpSocket  m_udp;

};
#endif // MAINWINDOW_H
